草庐IT

Rust 结构体

全部标签

c# - 无状态状态机库 - 适当的结构方式?

人们在使用c#无状态库时如何构建他们的代码?https://github.com/nblumhardt/stateless我特别感兴趣的是这如何与注入(inject)的依赖关系相关联,以及正确的职责和分层方法。我目前的结构包括以下内容:publicclassAccountWf{privatereadonlyAspNetUseraspNetUser;privateenumState{Unverified,VerificationRequestSent,Verfied,Registered}privateenumTrigger{VerificationRequest,Verificatio

c# - SharpSvn:获取存储库结构和单个文件

我正在尝试将一个简单的存储库浏览器构建到Web应用程序中,并且一直在研究使用SharpSvn来提供帮助。我可以找到所有常用的物理命令,如更新、提交,它们实际上会对存储库或工作副本进行更改,但我正在努力寻找查询存储库结构或内容的方法。有什么方法可以让我读取存储库的结构,以便可以在网页中显示一个简单的资源管理器式界面(即目录TreeView和文件列表)? 最佳答案 SharpSvn.SvnClient类有一个GetList()非常有效的功能:using(SvnClientsvnClient=newSvnClient()){Collect

c# - 有关结构实现接口(interface)时发生的情况的详细信息

我最近遇到了这个Stackoverflow问题:Whentousestruct?在里面,它有一个答案,说的有点深奥:Inaddition,realizethatwhenastructimplementsaninterface-asEnumeratordoes-andiscasttothatimplementedtype,thestructbecomesareferencetypeandismovedtotheheap.InternaltotheDictionaryclass,Enumeratorisstillavaluetype.However,assoonasamethodcalls

c# - 可空结构与类

我有一个包含两个字段的简单结构;一个存储对象,另一个存储日期时间。我这样做是因为我想将对象存储在字典中,但也带有日期时间戳。我有一个返回我的结构的方法,我现在决定该方法也应该能够返回null,所以我使我的结构可以为null。我现在想知道是否应该让我的结构成为一个类,这样它就是一个引用类型? 最佳答案 在这种情况下,是的,将您的结构设为类可能更清楚。就论证而言,您实质上是在创建一个专门的元组。有趣的是,库设计者选择制作.Net4Tuple一个类而不是一个结构。(该页面是元组创建者和各种元组实例类的链接)

c# - 如何使只读结构 XML 可序列化?

我有一个只有一个字段的不可变结构:structMyStruct{privatereadonlydoublenumber;publicMyStruct(doublenumber)=>this.number=number;}我希望它能够通过以下方式序列化/反序列化:数据契约序列化器二进制格式化程序XML序列化程序(编辑:在原始问题中忘记了)Json.NET(不添加Json.NET作为依赖项)所以结构变成了这样:[Serializable]structMyStruct:ISerializable,IXmlSerializable{privatereadonlydoublenumber;pub

c# - 如何处理 null 或可选的 DLL 结构参数

如何处理使用pinvoke从C#调用的dll方法中的可选struct参数?例如,lpSecurityAttributesparameterhere不存在时应传递null。传递struct的正确方法似乎是使用ref,但它不能有可选参数,或者通常采用null.有什么方法可以实现? 最佳答案 你有几个选择1)使用class而不是struct我觉得这个方法最简单。只需声明struct作为class:[StructLayout(LayoutKind.Sequential)]publicclassCStruct{//member-list}然后

c# - 为什么编译器为 "yield"生成的枚举器不是结构?

compiler-generatedimplementation的IEnumerator/IEnumerable对于yieldmethods和getters似乎是一个类,因此分配在堆上。但是,其他.NET类型,例如List具体返回struct枚举数以避免无用的内存分配。通过对C#深入帖子的快速概述,我看不出为什么这里也不是这种情况。我错过了什么吗? 最佳答案 Servy正确回答了您的问题——您在评论中自己回答的问题:Ijustrealizedthatsincethereturntypeisaninterface,itwouldget

c# 结构/类堆栈/堆控制?

所以在C++中这很容易。你想在堆上分配任何类/结构,使用新的。如果你想把它放在堆栈上,不要使用new。在C#中,我们总是使用new关键字,并且根据它是结构还是类,它被分配到堆栈或堆上(结构进入堆栈,类进入堆)——在某些应用程序中更改设计时可能会产生巨大的性能差异,这样只有那些对象才会进入真正属于那里的堆。我想知道的是-有没有一种直接的方法来控制对象的分配位置,而不管它是声明为结构还是类?我知道值类型(结构)可以装箱以进入堆(但装箱/拆箱会以性能成本为代价)。有没有办法在堆栈上分配类?此外,是否有任何机制可以分配原始内存并使用C++中的placementnew之类的东西?我知道这打破了被

c# - .NET “double” 算法是否独立于平台/体系结构?

如果我在Windows(x86和x64)下的.NET上运行涉及System.Double的复杂计算,然后在Mono(Linux、Unix等)上运行,绝对有保证以在所有情况下得到完全相同的结果,或者规范是否允许在计算中有一些回旋余地? 最佳答案 来自MSDNInaddition,thelossofprecisionthatresultsfromarithmetic,assignment,andparsingoperationswithDoublevaluesmaydifferbyplatform.Forexample,theresul

c# - WinForms 应用程序的体系结构?

几周前我开始了一个WinForms项目,因为我真的不知道我想要什么功能,所以我只是一路添加它们。这现在造成了一个可怕的困惑,我的MainForm是一个大泥球,例如一些重要的状态更改是由UI元素触发的,以至于我必须调用控件的OnChange事件才能更改数据库中的某些状态.简而言之:我刚刚开始了一个新项目,我想在其中采用更好的方法。我只是不知道哪个是“好”的。在ASP.netMVC中,我发现MVVM模式非常有用,但在桌面上,MVVM似乎只适用于WPF,不适用于WinForms。另一种方法是三层架构:我有我的数据库类,它目前直接与UI对话。我现在创建一个新的静态类(“ApplicationS